A Rational Deconstruction of Landin's J Operator
نویسندگان
چکیده
Landin’s J operator was the first control operator for functional languages. It was specified with an extension of the SECD machine, which was the first abstract machine for functional languages. We present a family of compositional evaluation functions corresponding to this extension of the SECD machine, using a series of elementary transformations (transformation into continuation-passing style (CPS) and defunctionalization, chiefly) and their left inverses (transformation into direct style and refunctionalization). To this end, we modernize the SECD machine into a bisimilar one that operates in lock step with the original one but that (1) does not use a data stack and (2) uses the caller-save rather than the callee-save convention for environments. We then characterize the J operator in terms of CPS and in terms of delimited-control operators in the CPS hierarchy. As a byproduct, we also present a reduction semantics for applicative expressions with the J operator, based on Curien’s original calculus of explicit substitutions. This reduction semantics mechanically corresponds to the modernized version of the SECD machine and to the best of our knowledge, it provides the first syntactic theory of applicative expressions with the J operator. The present work is concluded by a motivated wish to see Landin’s name added to the list of co-discoverers of continuations. Methodologically, however, it mainly illustrates the value of Reynolds’s defunctionalization and of refunctionalization as well as the expressive power of the CPS hierarchy (a) to account for the first control operator and the first abstract machine for functional languages and (b) to connect them to their successors. (A preliminary version appears in the proceedings of IFL 2005 [38].) ∗Revised version of BRICS RS-06-4. †IT-parken, Aabogade 34, DK-8200 Aarhus N, Denmark. Email: ,
منابع مشابه
A Rational Deconstruction of Landin's SECD Machine with the J Operator
Landin’s SECD machine was the first abstract machine for applicative expressions, i.e., functional programs. Landin’s J operator was the first control operator for functional languages, and was specified by an extension of the SECD machine. We present a family of evaluation functions corresponding to this extension of the SECD machine, using a series of elementary transformations (transformatio...
متن کاملA Rational Deconstruction of Landin's SECD Machine
Landin’s SECD machine was the first abstract machine for the λ-calculus viewed as a programming language. Both theoretically as a model of computation and practically as an idealized implementation, it has set the tone for the subsequent development of abstract machines for functional programming languages. However, and even though variants of the SECD machine have been presented, derived, and ...
متن کاملIntertextual Reading of Postmodern Architecture (Based on Historicist postmodern architecture and Deconstruction)
Postmodernism is a very ambiguous term. It attracted many researchers from different fields of knowledge in the late 1960s. This article explains intertextuality as a critical means to derive its concepts and components in order to understand the hidden layers of meaning in postmodern pluralist ideology. Variable thoughts of postmodern architecture have been divided into two categories—Hi...
متن کاملAn Introduction to Landin's "A Generalization of Jumps and Labels"
This note introduces Peter Landin’s 1965 technical report “A Generalization of Jumps and Labels”, which is reprinted in this volume. Its aim is to make that historic paper more accessible to the reader and to help reading it in context. To this end, we explain Landin’s control operator J in more contemporary terms, and we recall Burge’s solution to a technical problem in Landin’s original account.
متن کاملOperator Valued Series and Vector Valued Multiplier Spaces
Let $X,Y$ be normed spaces with $L(X,Y)$ the space of continuous linear operators from $X$ into $Y$. If ${T_{j}}$ is a sequence in $L(X,Y)$, the (bounded) multiplier space for the series $sum T_{j}$ is defined to be [ M^{infty}(sum T_{j})={{x_{j}}in l^{infty}(X):sum_{j=1}^{infty}% T_{j}x_{j}text{ }converges} ] and the summing operator $S:M^{infty}(sum T_{j})rightarrow Y$ associat...
متن کامل